package thread;
/*
* 静态方法上如果使用synchronized，那么该方法一定具有同步效果
* */
public class SyncDemo3 {
    public static void main(String[] args) {
//        Thread t1=new Thread(Boo::doSome);
//        Thread t2=new Thread(Boo::doSome);
        Boo b1=new Boo();
        Boo b2=new Boo();
        Thread t1=new Thread(()->b1.doSome());//不可以用方法引用,也就是中级简化版,容易有语法歧义
        Thread t2=new Thread(()->b2.doSome());
        t1.start();
        t2.start();
    }
}
class Boo{
    public synchronized static void doSome(){
        //如果在静态方法中使用同步块,那么同步监视器对象应当还是类对象,即class的实例对象
        Thread t=Thread.currentThread();
        System.out.println(t.getName()+"正在执行dosome方法...");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
        }
        System.out.println(t.getName()+"dosome方法执行完毕...");
    }
}
